﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Qiang.Geometry
{
    /// <summary>
    /// 只有两个点（起点和终点）组成的线。
    /// </summary>
    public class Line : LineString, ILine
    {

        #region 初始化


        /// <summary>
        /// 
        /// </summary>
        /// <param name="coordinates"></param>
        public Line(IList<Coordinate> coordinates)
            :base(coordinates)
        {
            Init(coordinates);
        }

     


        /// <summary>
        /// 
        /// </summary>
        /// <param name="coordinates"></param>
        void Init(IList<Coordinate> coordinates)
        {
           
        }


        #endregion


        #region ICurve成员

        /// <summary>
        /// 是否为环。
        /// </summary>
        public override bool IsRing
        {
            get
            {
                return false;
            }
        }

        /// <summary>
        /// 是否为封闭图形。
        /// </summary>
        public override bool IsClosed
        {
            get
            {
                return false;
            }
        }
      


        #endregion


        #region ICurve方法

        /// <summary>
        /// 计算长度。
        /// </summary>
        /// <returns></returns>
        protected override double ComputeLength()
        {
            return StartPoint.Distance(EndPoint);
        }


        #endregion



        #region Geometry成员

        /// <summary>
        /// 坐标集合。
        /// </summary>
        public override IList<Coordinate> Coordinates
        {
            get
            {
                List<Coordinate> coors = new List<Coordinate>();
                coors.Add(StartPoint);
                coors.Add(EndPoint);
                return coors;
            }
            set
            {
                Init(value);
            }
        }

        /// <summary>
        /// 
        /// </summary>
        public override int Dimension
        {
            get
            {
                return base.Dimension;
            }
        }


        /// <summary>
        /// 是否为简单图形。
        /// </summary>
        public override bool IsSimple
        {
            get
            {
                return true;
            }
        }
        
        /// <summary>
        /// 几何类型
        /// </summary>
        public override GeometryType GeometryType
        {
            get { return GeometryType.Line; }
        }


        /// <summary>
        /// 是否为空。
        /// </summary>
        public override bool IsEmpty
        {
            get
            {
                return true;
            }
        }

        #endregion


        #region 方法





        #endregion


      

    }
}
